package com.jt.controller;

import com.jt.service.FileService;
import com.jt.service.ItemService;
import com.jt.vo.ImageVO;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@RestController
@CrossOrigin
@RequestMapping("/file")
public class FileController {

    @Autowired
    private FileService fileService;



    /**
     * 文件上传业务接口
     * URL:/file/upload
     * 类型：post
     * 参数：file=字节信息
     * 返回值：SysResult(ImageVO)
     * 知识点：
     *     SpringMVC针对于IO操作开发MultipartFile
     *     底层实现就是常规IO流，简化了用户的操作过程，无需手动关流
     * 步骤：
     *    1.获取文件名称
     *    2.准备文件路径
     *    3.准备文件上传的全路径
     *    4.实现文件上传操作
     */
    @PostMapping("/upload")
    public SysResult fileUpload(MultipartFile file){

        ImageVO imageVO = fileService.upload(file);
        if (imageVO == null){
            return SysResult.fail();
        }
        return SysResult.success(imageVO);

    }


    //@PostMapping("/upload")
    public SysResult upload(MultipartFile file) throws IOException {
        //1.获取文件名称
        String filename = file.getOriginalFilename();
        //2.准备文件目录
        String dir = "D:/project3/images";
        File dirFile = new File(dir);
        if(!dirFile.exists()){//判断目录是否存在
            dirFile.mkdirs();//创建多级目录
        }
        String path = dir + "/" +filename;
        file.transferTo(new  File(path));
        return SysResult.success();
    }

    /**
     * 完成图片的删除操作
     * URL：http://localhost:8091/file/deleteFile
     * 参数：virtualPath
     * 返回值：SysResult对象
     * @param virtualPath
     * @return
     */
    @DeleteMapping("/deleteFile")
    public SysResult deleteFile(String virtualPath){
        fileService.deleteFile(virtualPath);
        return SysResult.success();
    }


}
